import {isNumber, isString} from "@pureadmin/utils";

type K = 'around' | 'ceil' | 'floor';
/**
 * 对数字或者字符格式的数字进行处理
 * @param val 要处理的数据
 * @param decimal  保留几位小数
 * @param type  保留用那种方式保留  四舍五入还是进一法或者舍尾法
 * @returns r 返回字符串格式的结果  不合法时返回NaN
 */
function  aroundNumber (val: string | number, decimal = 2, type: K = 'around'): number | string {
    const t = isString(val) ? parseFloat(val) : isNumber(val) ? val : NaN;
    if (isNaN(t)) {
        return NaN;
    }
    const de = parseInt(decimal?.toString());
    if(isNaN(de)){
        return NaN;
    }
    if(de < 0 ){
        return t;
    }
    const s = (Math[type]?.(t * 10^de) / 10^de).toString();
    let r = s;
    const d = r.indexOf(".");
    if (d < 0) {
        return  d
    }
    const arr  = s.split('.');
    while (arr[1]?.length <= de) {
        r += "0";
    }
    return r;
}
export default {
    aroundNumber
}
